Usb connections

ABSTRACT

A method of configuring a Universal Serial Bus (USB) connection between a first and second devices, the USB connection comprising a plurality of data channels, each having a pair of signal links, each signal link including a port at either end of the connection, and a signal wire formed of one or more physical wires extending between corresponding ports. Each of the signal links are configured with a first direction for transmission of data. The first direction is determined based on an initial required data transmission capacity in each direction between the first and second devices. Thereafter, depending on required capacity in the different directions, a selection is made which of the signal links should change their direction of transmission from the first direction to a second direction and a redirection signal is sent to each of the selected signal links to cause the change in direction of transmission.

RELATED APPLICATIONS

This application is a U.S. National Stage patent application ofInternational Patent Application No. PCT/GB2016/050801 (filed on Mar.22, 2016), the benefit of which is claimed, and claims priority to GreatBritain Patent Application No. 1505352.3 entitled “USB Connections,”which was filed Mar. 27, 2015, each of which are hereby incorporated byreference in their entirety.

TECHNICAL FIELD

The present invention relates to methods for configuring a USBconnection that can be used for carrying generic data between twodevices to make it more flexible depending on the data being carried.

BACKGROUND

In desktop computing, it is now common to connect external peripheralssuch as mice, keyboards or display devices to a computing device such asa standard desktop computer, a laptop or even a mobile device such as asmartphone or tablet computer. A computing device which is supplyingdata to or controlling a peripheral is commonly known as a host. A hostsuch as a standard desktop computer will, in general, be provided withspecific output ports for each variety of output data. For example, itmay have a single VGA post for video data. The connection of additionalperipherals for which there are no specific ports is difficult, as itwould generally require the user to install additional ports or internaldevices such as additional hard drives or graphics cards. Solutionsalong these lines are relatively expensive and may be difficult forless-technical users.

An alternative method of connecting an external peripheral is to connecteach peripheral to a USB socket on the host, as all modern computers areprovided with multiple USB sockets. This provides a simple connectiontopology, but requires additional hardware and software to be present,as in general, USB has a low bandwidth that makes the provision ofgood-quality video output or fast data transfer, for example, anon-trivial task.

A USB cable commonly comprises one or more pairs of signal links, a pairbeing known as a data channel, where one of the links carries data inone direction and the other link carries data in the other direction,i.e. there is an upstream and a downstream link for each channel. TheUSB cable, when connected to a USB connector at each end, forms part ofa USB connection, together with a USB controller at each of the devicesat each end of the USB cable. Nevertheless, if data only needs to betransmitted primarily in one direction, for example where the connectionis from a user input device such as a microphone, there will be no datainput to the microphone and therefore only half of the USB connection'slimited bandwidth will be in use. This results in wasted resources.

The invention seeks to address at least part of the above-describedproblem.

SUMMARY

According to a first aspect of the invention, there is provided a methodof configuring a Universal Serial Bus, USB, connection between a firstdevice and a second device, the USB connection comprising a plurality ofdata channels, each data channel comprising a pair of signal links, eachsignal link comprising a port in the device at either end of theconnection, a controller in each of the first and second devices coupledto control the connection at each port, and a signal wire extendingbetween corresponding ports, each signal wire comprising one or morephysical wires, the method comprising:

-   -   configuring both of the signal links of at least one of the data        channels to be capable of transmitting data bidirectionally;    -   initially determining a first direction for transmission of data        for each of the bidirectionally configured signal links based on        an initial required data transmission capacity in each direction        between the first and second devices;    -   transmitting data along each of the bidirectionally configured        signal links in the determined first direction;    -   selecting which of the bidirectionally configured signal links        that are transmitting data in the first direction should change        their direction of transmission to a second direction;    -   sending a redirection signal to each of the selected        bidirectionally configured signal links to cause the selected        bidirectionally configured signal links to change their        direction of transmission of data to a second direction; and    -   transmitting data along each of the selected bidirectionally        configured signal links in the second direction.

This method is beneficial because it allows signal links within a singleUSB cable to be used as efficiently as possible, according to thespecific circumstances. For example, if an external hard disk isconnected to a desktop computer and is being used to back up thecomputer, most of the data will be flowing from the computer to theexternal hard drive. Presently, only half the available bandwidth willbe used. Using the method described above, all the signal links in theconnection could be configured to transmit data from the computer to theexternal hard drive and, as a result, the data will be transmitted morequickly and efficiently.

Preferably, there are at least two high speed data channels and at leastone low speed data channel, wherein the signal links of the high speeddata channels are configured to be capable of transmitting databidirectionally.

In one embodiment, the first direction initially determined for all ofthe bidirectionally configured signal links is the same, with one of thesignal links of the slow speed data channel being used in the seconddirection.

The method may further comprise receiving a request signal requesting aparticular data transmission capacity in a particular direction.Preferably, the request signal includes a request for a preferred numberof signal links to be used for data transmission in the particulardirection. In an embodiment, the request signal may include a requestfor a minimum number of signal links to be used for data transmission inthe particular direction.

Selecting which of the bidirectionally configured signal links that aretransmitting data in the first direction should change their directionof transmission to a second direction is preferably based on the requestsignal.

Selecting which of the bidirectionally configured signal links that aretransmitting data in the first direction should change their directionof transmission to a second direction may be based on a priority of thedata to be transmitted over the selected bidirectionally configuredsignal links and data to be transmitted over non-selectedbidirectionally configured signal links. The priorities of the data tobe transmitted over the selected bidirectionally configured signal linksand the data to be transmitted over non-selected bidirectionallyconfigured signal links preferably depend on priorities of processesusing the data. In an embodiment, the priorities of the processes may bemaintained in a look-up table.

Preferably, the first device comprises host device and the second devicecomprises a peripheral device.

The first device and the second device preferably initially negotiatingto determine which controller will perform the initial determining,selecting and sending steps.

The co-ordinating controller would preferably be selected as part of theconnection of the devices, during the normal handshaking procedure.Preferably, it is the host or the device closest to the host (forexample, a hub connected directly to the host), but other heuristics maybe provided, for example:

-   -   the device with the most connection ports provided is        automatically the co-ordinating device;    -   the device with the most processing power is automatically the        co-ordinating device;    -   the device with the most available local memory is automatically        the co-ordinating device    -   in any combination or combined with other heuristics.

This feature is beneficial because it allows for better configuration ofthe links according to the needs of the two devices, which may vary andmay be flexible. This would be most useful in a case where there wasdata moving both ways, for example to and from a touchscreen display.The maximum number of possible links could be provided for display data,while at the same time providing return lanes when necessary for theinput data received through the touchscreen. In this example, the numberof preferred and minimum lanes required by the touchscreen may be thesame number, since user input has a high priority. However, in anotherexample, such as where data is also being read from an external harddisk being used for a backup, the external hard disk might request ahigh preferred number of lanes but a low minimum number, since while itis important that the data is read quickly, it is not vital. If thebackup is being performed by a higher-priority process then the readoperation could be assigned a low number of lanes and transfer data moreslowly than would be ideal.

The priorities of different processes could, for example, be stored in alookup table in the driver application that controls access to theperipheral. Alternatively, the host could have a policy of alwaysgranting the preferred or minimum number of requested lanes, or a numberof lanes equal to the average of the two requests, or these heuristicscould be combined in any combination and with other appropriateheuristics, according to the natures of the host and peripheral and thespecific circumstances of the connection.

According to a second aspect of the invention, there is provided asystem comprising:

-   -   a host device having a plurality of ports connected to a host        controller;    -   a peripheral device having a plurality of ports connected to a        peripheral controller; and    -   Universal Serial Bus, USB, cable between the host device and the        peripheral device,    -   the system providing a USB connection comprising a plurality of        data channels, each data channel comprising a pair of signal        links, each signal link comprising a port in the host device, a        port at the peripheral device and a signal wire extending        between corresponding ports, together with the host and        peripheral controllers, each signal wire comprising one or more        physical wires, wherein the USB connection is configured to        perform a method as described above.

Some presently known active cables are capable of switching thedirection of their links, but this requires special processing blocks tobe provided within the cables, which must also be supplied with power.Embodiments of the present invention do not require any change to thecable and are therefore cheaper as there is no need for the user toreplace his or her current cables and compatible cables do not requireadditional components. Furthermore, no power need be supplied to thecables, which increases power efficiency and possibly also safety as itmeans that there is less likely to be a current flowing over anunconnected cable.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention will now be more fully described, by way ofexample, with reference to the drawings, of which:

FIG. 1 is a schematic of a known USB cable connected between a hostdevice and a peripheral device;

FIG. 2 is a schematic of a system with a USB connection according to anembodiment of the present invention;

FIG. 3 is a flowchart showing a method of operation of the embodiment ofFIG. 2; and

FIG. 4 is a more detailed schematic of an example hardware embodiment ofa device used in the system of FIG. 2.

DETAILED DESCRIPTION

FIG. 1 shows a schematic of a known USB cable 11 connected between ahost device 17 and a peripheral device 18. In this example there are twodata channels 12, each of which contains a link 13 that transmits datafrom the host device 17 to the peripheral device 18 and a link 14 thattransmits data from the peripheral device 18 to the host device 17.These links are used for data flow in their dedicated directionsregardless of the amount of data flow and the needs of the two devicesand this is enforced by the positions of transmitter 16 and receiverports 15 (Tx and Rx respectively) in the devices. In a passive cablesuch as this, the host-peripheral links 13 will be connected to a Txport 16 at the host device 17 and an Rx port 15 at the peripheral device18 and the opposite will be true of the peripheral-host links 14. As aresult, if, for example, the peripheral device 18 is a dumb displaydevice, data will only be transmitted along the host-peripheral links 13and the peripheral-host links 14 will not be used. This means thatresources are wasted.

FIG. 2 shows a schematic of a USB connection made up of a USB cable 21,host device 22 and peripheral device 23 configured in accordance with anembodiment of the present invention. The USB cable 21 comprises fourhigh-speed signal links 26 and a slow signal link 27. At each end of thecable 21 is a plug 24 and 25, which are connected to the host device 22or the peripheral device 23, respectively. The cable 21 could bephysically arranged as a known passive cable, making the systembackwardly-compatible so that no further processors or other hardwareneed be added to the cable 21. The embodiment shown only requireschanges to the hardware and/or software of the host device 22 and theperipheral device 23.

For example, one known USB cable may contain two USB 3 super-speed datachannels, such that each of the data channels contains two links. Thecable may also include a single USB 2 channel, as is common forbackwards-compatibility purposes. No physical changes would be necessaryto such a cable in order to train the four super-speed links to operateaccording to one embodiment of the invention so that the foursuper-speed links would be able to work bi-directionally and the USB 2channel could be used as a signalling link.

The host device 22 and the peripheral device 23 each contain socketcontrollers 28, 29 designed to control the use of the cable 21 and thedirections of the links 26 as well as receiving and directing data toother components of the respective devices down an internal connection214 and 215. The socket controllers 28 and 29 are also connected toconnectors 212 and 213 in the sockets of their respective devices 22 and23. When the plugs of cable 21 are plugged into the correspondingsockets of the devices, these connectors 212 and 213 come into contactwith their complementary connectors 210 and 211 in the plugs at the endsof the cable 21. As a result, signals and data can be transmitted acrossthem.

The cable 21 can be arranged to be functionally the same as the knowncable described with respect to FIG. 1, with equal numbers of high-speedlinks 26 going in each direction. However, in a situation such as theconnection between a host device and a display device described above,it would be possible, according to the present embodiment, to arrangethe connections such that all four high-speed links carry display datafrom the host device 22 to the peripheral device 23. This would doublethe available bandwidth without increasing the number of links 26 in thecable 21.

FIG. 3 shows a process by which such a connection can be configured andused, with reference to the embodiment shown in FIG. 2.

At Step 31, the USB cable 21 is plugged into each device 22 and 23 inthe conventional way and the internal 212 and 213 and external 210 and211 connectors make contact, triggering a handshaking according to theUSB protocol in the normal way.

In this case, however, as part of handshaking, at Step 32, the devices22 and 23 negotiate which of them will act as the co-ordinating device.In this embodiment, the heuristic used is simply that the host device 22will always act as the co-ordinating device, but other heuristics arepossible.

At Step 33, the first stage of training begins. This is the Equalisationstage, which ensures that each socket controller 28 and 29 is correctlyconfigured with regard to each link 26. During this stage of training,each device 22 and 23 sends a known packet of data repeatedly down alink 26 until the other device 23 and 22 adjusts the parameters of itsreceiver to the point where it is able to read the data correctly. Thisprocess is repeated for each link 26 in each direction upon initialconnection, which ensures that every link 26 is capable of being used inboth directions.

At Step 34, initial link training begins. This also involves sendingpackets of known configuration data down a link 26 in a single directionand allows each socket controller 28 and 29 to get a bit and symbol lockfor each link 26, dictating the initial direction of data flow, which isset at Step 35. The number of links 26 transmitting data in eachdirection could be equal in the first instance, or could be entirely inone direction or the other, or could be balanced in any other wayaccording to stored heuristics or negotiation between the devices 22 and23.

For example, in this embodiment four links 26 are available. Theperipheral device 23 might send a signal to the host device 22 when theconnection is first being negotiated, using the dedicated signal link27, that it requires a minimum of one link 26 in the first instance. Thehost device 22 could then configure one link 26 to transmit data fromthe peripheral device 23 to the host device 22 during initial linktraining, while configuring the other three links 26 to transmit datafrom the host device 22 to the peripheral device 23.

At Step 36, data transmission begins, in the directions and using thelinks 26 configured during training. This will continue untilinterrupted by disconnection of the cable 21 or a requirement to changethe direction of one or more links 26, though individual links 26 maytemporarily become idle if there is not sufficient data beingtransmitted in a given direction to occupy all available links 26.

Thus, at Step 37, the peripheral device 23, might require an additionallink, for example because it is receiving user input. The peripheraldevice 23 determines (step 316) whether there is a link 26 not currentlyin use. If so, the peripheral device 23 will immediately begin linktraining in order to use that link 26 (Step 312). If there is no idlelink available, the peripheral device 23 uses the dedicated signal wire27 to send a signal to the host device 22 (the co-ordinating device)requesting use of a link 26 (Step 38).

When it receives the signal from the peripheral device 23, the hostdevice 22 automatically slows the rate of data production, increasesdata compression or performs any other method of reducing the volume ofdata transmission (Step 39). The host device 22 then selects a link 26for transfer to be used by the peripheral device 23 and stops sendingdata through it. The link 26 then becomes idle (Step 310).

Selection of the lane 26 whose data flow direction is to be changed maybe according to a heuristic such as:

-   -   the most recent lane to fetch data for transmission is selected;    -   the least recent lane to fetch data for transmission is        selected;    -   the lanes are assigned an order and the first lane in this order        that is currently transmitting data in the appropriate direction        is selected;

or another suitable heuristic according to the circumstances of theconnection. The host device 22 may also be responsible for determiningthe number of links 26 to be assigned to the peripheral device 23 withreference to a preferred and minimum numbers of lanes 26 requested,which may also be used when selecting the link 26.

The peripheral device 23 is aware that it is no longer receiving datathrough a particular link 26 and therefore that the link 26 has beenfreed (Step 311). The peripheral device 23 then begins link training bysending a wakeup signal down the newly idle link 26 (Step 312). Only thelink training part of training needs to be repeated at Step 313, sinceall the links were initially trained to perform bi-directionally, andonly with respect to the link 26 whose direction is being changed, sothis stage is faster than the initial training stage.

The link training stage will be the same as the previously-describedinitial link training stage at Step 34 and involve the peripheral device23 sending packets of known configuration data down the newly idle link26, reconfiguring the socket controller on the host 28 in the same wayas initial configuration. This, combined with any signal sent at Step38, comprises a reconfiguration signal. Of course, if the host device 22requires a link currently being used by the peripheral device 23, it maysend a similar reconfiguration signal to the peripheral device 23, asdescribed hereinafter.

At Step 314, the peripheral device 23 is then able to transmit data downthe reallocated link 26. It sends a signal to the host device 22 usingeither the dedicated slow signal wire 27 or the newly-reallocated link26 to confirm that the direction of the link 26 has changed and warn thehost device to expect to receive data through that link 26, and it thenbegins transmitting data at Step 315.

In an alternative mode of operation using the same embodiment, the hostdevice 22 and peripheral device 23 are connected and the cable 21 isconfigured according to Steps 31-35 as described above, with equalnumbers of links 26 carrying data in each direction. For example, thehost device 22 may be a laptop computer and the peripheral device 23 maybe an external hard disk. In this embodiment, a user may be sending datato the peripheral device 23 as in the case of an external display, butalso reading data from the peripheral device 23 for use on the hostdevice 22.

If the host device 22 requires the use of an additional link 26, itchecks the links 26 that it is currently using and those from which itis currently receiving data in order to see if any are currently idle.If so, as aforementioned at Step 312, it begins link training in orderto use that link 26. Otherwise, as the co-ordinating device, it willselect a link to reallocate, possibly using a similar heuristic to thosedescribed above, and uses the dedicated signal wire 27 to send a signalto the peripheral device 23 telling it to stop using that link 26. Theperipheral device 23 will adjust its rate of data transmission asaforementioned at Step 39 and stop transmitting data down the requestedlink 26. The host device 22 is aware that it is no longer receiving datafrom that link 26 and that it has become idle. It therefore begins linktraining as aforementioned at Step 312. When this is complete, it willsignal to the peripheral device 23 that the direction of the link 26 haschanged, and it will begin transmitting data.

FIG. 4 shows a more detailed example hardware embodiment of a socketcontroller 28, 29 such as those shown in FIG. 2. As shown in FIG. 2,these socket controllers 28, 29 are within the host device 22 and theperipheral device 23. This example shows the socket controller 28 in thehost device 22, although they may be identical. The socket controller islikely to include components other than those shown here, but they arenot shown for the sake of clarity. Furthermore, only one set ofcomponents for one link is labelled with reference numerals, althoughall the others are shown as being identical.

The socket controller has a number of connectors 41 which connect tocorresponding complementary connectors in the plug of a cable asdescribed in FIGS. 2 and 3. Each connector 41 is connected to a switch42 which either delivers data from a transmitter 43 or directs incomingdata to a receiver 44. The behaviour of the switch 42 is controlled by acontroller 46 via a control line (shown as a dotted line) to switchbetween receiving behaviour and transmitting behaviour according toinstructions received from the controller 46. The controller 46 in turnreceives instructions via a communication line 49 from a main processoron the host device. This may be a conventional processor and is not hereshown.

During training as aforementioned, each transmitter 43 associated witheach link will be responsible for sending configuration packets and itscorresponding receiver 44 at the other end of the connection will beresponsible for changing its parameters until it can read them.

In an alternative embodiment, the controller 46 could be a more powerfulprocessor with the capability to make switching decisions itself. Inthis case, it would receive signals from a signalling engine 412 coupledto the slow signal line over connector 411 directly rather than thesebeing passed back to the main host processor. However, it would stillcommunicate via the communication line 49 with the main processor inorder to relay signals that would prompt the main processor to alter thevolume of data being supplied by, for example, increasing or decreasingcompression.

Data is supplied to the socket controller through a data input line 48into an input engine 47 which contains an input buffer 413 to hold datainput from the main processor until it is fetched by a transmitter 43along the appropriate output line (shown as a dashed line). Thetransmitters 43 are aware of whether they are currently connected totheir respective connectors 41 by the switches 42 and will not fetchdata unless they can output it.

The receivers 44 are connected to an output engine 45 which contains anoutput buffer 414 in which data is stored prior to being fetched by themain processor of the host down a data line 410. When data is receivedby a receiver 44, it is immediately sent to the output engine 45 alongthe appropriate output line (shown as a solid line).

Both the input engine 47 and the output engine 45 have signallingconnections with the controller 46. These enable them to tell thecontroller 46 when their respective buffers 413, 414 are approaching alevel where overflow may be a concern. Such signals could prompt thecontroller 46 to:

-   -   send a signal to the main host processor telling it to reduce        the volume of data produced;    -   send a signal to the connected device telling it to reduce the        volume of data produced;    -   send a signal to the main host processor requesting further        links to be made available for output (this would then prompt        the host to behave as described in FIG. 3);    -   in an embodiment where the controller 46 is capable of making        such requests, send the appropriate signals to change the        direction of a link without the involvement of the main host        processor;

as appropriate. These possibilities may be applied in combination and/oralongside other signals and behaviours depending on the exactcircumstances and embodiment.

Where signals are to be sent to the connected device, this is donethrough the signalling engine 412, which is connected to the signallingconnector 411 which in turn is connected to the dedicated slow signallink (see FIG. 2). In this embodiment, the signalling engine 412receives signals from the main host processor which it then passes on tothe connected device as appropriate: for example, instructions to stoptransmitting down a certain lane so that it can be converted to carrydata in the other direction, or to slow the rate of data productionbecause the host device is unable to process it quickly enough.

Naturally, although the socket controller shown in FIG. 4 is describedas a being on the host device 22, the corresponding socket controller onthe peripheral device 23 may be identical. This means that thesignalling engine 412 will receive signals from a processor on theperipheral device 23 and transmit these to the host device 22 in orderto prompt reconfiguration of one or more lanes as described in FIG. 3,in the same way as described above for the signalling engine 412 on thehost device 22. Likewise, the controller 46 will be in communicationwith the processor on the peripheral device 23 and will control theswitches accordingly to dictate transmit and receive behaviour.

Although only one particular embodiment has been described in detailabove, it will be appreciated that various changes, modifications andimprovements can be made by a person skilled in the art withoutdeparting from the scope of the present invention as defined in theclaims. For example, hardware aspects may be implemented as softwarewhere appropriate and vice versa. Furthermore, it will be appreciatedthat although the only four high-speed links have been described, theinvention may be implemented with any number of data links, whether highspeed or not. Also, although the controllers have been described asbeing in the devices in order to allow use of standard cables, ifdesired, in some circumstances, the controllers and other elements ofthe socket controllers may be incorporated into the plugs at each end ofthe cable itself, allowing it to be more “intelligent” with respect tothe use it makes of the bandwidth available in its links by monitoringthe data flow on the links, and may therefore be capable of carrying outthe reallocation of links, without requiring instructions from aco-ordinating device, although it would still need to train thetransmitting and receiving components in the sockets of each device.

Although illustrative embodiments have been shown and described, a widerange of modification, change and substitution is contemplated in theforegoing disclosure and in some instances, some features of theembodiments may be employed without a corresponding use of otherfeatures. One of ordinary skill in the art would recognize manyvariations, alternatives, and modifications. Thus, the scope of theinvention should be limited only by the following claims, and it isappropriate that the claims be construed broadly and in a mannerconsistent with the scope of the embodiments disclosed herein.

1. A method of configuring a Universal Serial Bus (USB) connectionbetween a first device and a second device, the USB connectioncomprising a plurality of data channels, each data channel comprising apair of signal links, each signal link comprising a port in the deviceat either end of the connection, a controller for the ports, and asignal wire extending between corresponding ports, each signal wirecomprising one or more physical wires, the method comprising:configuring both of the signal links of at least one of the datachannels to be capable of transmitting data bidirectionally; initiallydetermining a first direction for transmission of data for each of thebidirectionally configured signal links based on an initial requireddata transmission capacity in each direction between the first andsecond devices; transmitting data along each of the bidirectionallyconfigured signal links in the determined first direction; selectingwhich of the bidirectionally configured signal links that aretransmitting data in the first direction should change their directionof transmission to a second direction; sending a redirection signal toeach of the selected bidirectionally configured signal links to causethe selected bidirectionally configured signal links to change theirdirection of transmission of data to a second direction; andtransmitting data along each of the selected bidirectionally configuredsignal links in the second direction.
 2. The method of claim 1,comprising at least two high speed data channels and at least one lowspeed data channel, wherein the signal links of the high speed datachannels are configured to be capable of transmitting databidirectionally.
 3. The method of claim 2, wherein the first directioninitially determined for all of the bidirectionally configured signallinks is the same, with one of the signal links of the slow speed datachannel being used in the second direction.
 4. The method of claim 1,further comprising receiving a request signal requesting a particulardata transmission capacity in a particular direction.
 5. The method ofclaim 4, wherein the request signal includes a request for a preferrednumber of signal links to be used for data transmission in theparticular direction.
 6. The method of claim 4, wherein the requestsignal includes a request for a minimum number of signal links to beused for data transmission in the particular direction.
 7. The method ofclaim 4, wherein selecting which of the bidirectionally configuredsignal links that are transmitting data in the first direction shouldchange their direction of transmission to a second direction is based onthe request signal.
 8. The method of claim 1, wherein selecting which ofthe bidirectionally configured signal links that are transmitting datain the first direction should change their direction of transmission toa second direction is based on a priority of the data to be transmittedover the selected bidirectionally configured signal links and data to betransmitted over non-selected bidirectionally configured signal links.9. The method of claim 8, wherein the priorities of the data to betransmitted over the selected bidirectionally configured signal linksand the data to be transmitted over non-selected bidirectionallyconfigured signal links depend on priorities of processes using thedata.
 10. The method of claim 9, wherein the priorities of the processesare maintained in a look-up table.
 11. The method of claim 1, whereinthe first device comprises host device and the second device comprises aperipheral device.
 12. The method of claim 1, further comprising thefirst device and the second device initially negotiating to determinewhich controller will perform the initial determining, selecting andsending steps.
 13. A system comprising: a host device having a pluralityof ports connected to a host controller; a peripheral device having aplurality of ports connected to a peripheral controller; and a UniversalSerial Bus, USB, cable between the host device and the peripheraldevice, the system providing a USB connection comprising a plurality ofdata channels, each data channel comprising a pair of signal links, eachsignal link comprising a port in the host device, a port at theperipheral device and a signal wire extending between correspondingports, together with the host and peripheral controllers, each signalwire comprising one or more physical wires, wherein the USB connectionis configured by: configuring both of the signal links of at least oneof the data channels to be capable of transmitting data bidirectionally;initially determining a first direction for transmission of data foreach of the bidirectionally configured signal links based on an initialrequired data transmission capacity in each direction between the firstand second devices; transmitting data along each of the bidirectionallyconfigured signal links in the determined first direction; selectingwhich of the bidirectionally configured signal links that aretransmitting data in the first direction should change their directionof transmission to a second direction; sending a redirection signal toeach of the selected bidirectionally configured signal links to causethe selected bidirectionally configured signal links to change theirdirection of transmission of data to a second direction; andtransmitting data along each of the selected bidirectionally configuredsignal links in the second direction.
 14. The system of claim 13,wherein the USB connection comprises at least two high speed datachannels and at least one low speed data channel, wherein the signallinks of the high speed data channels are configured to be capable oftransmitting data bidirectionally.
 15. The system of claim 14, whereinthe first direction initially determined for all of the bidirectionallyconfigured signal links is the same, with one of the signal links of theslow speed data channel being used in the second direction.
 16. Thesystem of claim 13, wherein the USB connection is configured in responseto receiving a request signal requesting a particular data transmissioncapacity in a particular direction.
 17. The system of claim 16, wherein:the request signal includes a request for a preferred number of signallinks to be used for data transmission in the particular direction; orthe request signal includes a request for a minimum number of signallinks to be used for data transmission in the particular direction. 18.The system of claim 16, wherein selecting which of the bidirectionallyconfigured signal links that are transmitting data in the firstdirection should change their direction of transmission to a seconddirection is based on the request signal.
 19. The system of claim 13,wherein selecting which of the bidirectionally configured signal linksthat are transmitting data in the first direction should change theirdirection of transmission to a second direction is based on a priorityof the data to be transmitted over the selected bidirectionallyconfigured signal links and data to be transmitted over non-selectedbidirectionally configured signal links.
 20. The system of claim 19,wherein the priorities of the data to be transmitted over the selectedbidirectionally configured signal links and the data to be transmittedover non-selected bidirectionally configured signal links depend onpriorities of processes using the data.